package com.storage.system.mapper;

import com.storage.system.domain.StorageCategory;
import com.storage.system.domain.StorageUser;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 分类 数据层
 *
 * @author storage
 * @date 2019-08-18
 */
public interface StorageCategoryMapper {
    /**
     * 查询分类信息
     *
     * @param id 分类ID
     * @return 分类信息
     */
    public StorageCategory selectStorageCategoryById(Long id);

    /**
     * 查询分类列表
     *
     * @param storageCategory 分类信息
     * @return 分类集合
     */
    public List<StorageCategory> selectStorageCategoryList(StorageCategory storageCategory);

    /**
     * 新增分类
     *
     * @param storageCategory 分类信息
     * @return 结果
     */
    public int insertStorageCategory(StorageCategory storageCategory);

    /**
     * 修改分类
     *
     * @param storageCategory 分类信息
     * @return 结果
     */
    public int updateStorageCategory(StorageCategory storageCategory);

    /**
     * 删除分类
     *
     * @param id 分类ID
     * @return 结果
     */
    public int deleteStorageCategoryById(Long id);

    /**
     * 批量删除分类
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteStorageCategoryByIds(String[] ids);

    /**
     * 根据分类名称查询 count
     *
     * @param categoryName
     * @param createUserId
     * @return
     */
    int selectCategoryCountByName(@Param("categoryName") String categoryName, @Param("createUserId") Long createUserId, @Param("ownerType") Integer ownerType);

    /**
     * 查询分类
     *
     * @param categoryName
     * @param createUserId
     * @param ownerType
     * @return
     */
    StorageCategory selectCategoryByName(@Param("categoryName") String categoryName, @Param("createUserId") Long createUserId, @Param("ownerType") Integer ownerType);

    /**
     * 查询分类
     *
     * @param id
     * @param createUserId
     * @return
     */
    StorageCategory selectStorageCategory(@Param("id") Long id, @Param("createUserId") Long createUserId);

    /**
     * 查询分页数据
     *
     * @param storageCategory
     * @param start
     * @param pageSize
     * @return
     */
    List<StorageUser> queryPageList(@Param("category") StorageCategory storageCategory, @Param("start") Integer start, @Param("pageSize") Integer pageSize);

    /**
     * 查询分页count
     *
     * @param storageCategory
     * @return
     */
    Long queryPageCount(StorageCategory storageCategory);
}